{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#                                           numpy 练习题"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    " numpy 教程 https://www.runoob.com/numpy/numpy-array-creation.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### numpy 的array操作"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 1.导入numpy库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 2.建立一个一维数组 a 初始化为[4,5,6], (1)输出a 的类型（type）(2)输出a的各维度的大小（shape）(3)输出 a的第一个元素（值为4）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'numpy.ndarray'>\n",
      "(3,)\n",
      "4\n"
     ]
    }
   ],
   "source": [
    "a = np.array([4, 5, 6])\n",
    "print (type(a))\n",
    "print (np.shape(a))\n",
    "print (a[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3.建立一个二维数组 b,初始化为 [ [4, 5, 6],[1, 2, 3]] (1)输出各维度的大小（shape）(2)输出 b(0,0)，b(0,1),b(1,1) 这三个元素（对应值分别为4,5,2）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2, 3)\n",
      "4 5 2\n"
     ]
    }
   ],
   "source": [
    "b = np.array([[4, 5, 6], [1, 2, 3]])\n",
    "print (np.shape(b))\n",
    "print (b[0, 0], b[0, 1], b[1, 1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.  (1)建立一个全0矩阵 a, 大小为 3x3; 类型为整型（提示: dtype = int）(2)建立一个全1矩阵b,大小为4x5;  (3)建立一个单位矩阵c ,大小为4x4; (4)生成一个随机数矩阵d,大小为 3x2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = np.zeros((3, 3), dtype=np.int)\n",
    "b = np.ones((4, 5))\n",
    "c = np.eye(4)\n",
    "d = np.random.rand(3, 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 5. 建立一个数组 a,(值为[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] ) ,(1)打印a; (2)输出  下标为(2,3),(0,0) 这两个数组元素的值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1  2  3  4]\n",
      " [ 5  6  7  8]\n",
      " [ 9 10 11 12]]\n",
      "12 1\n"
     ]
    }
   ],
   "source": [
    "a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])\n",
    "print (a)\n",
    "print (a[2, 3], a[0, 0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 6.把上一题的 a数组的 0到1行 2到3列，放到b里面去，（此处不需要从新建立a,直接调用即可）(1),输出b;(2) 输出b 的（0,0）这个元素的值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[3 4]\n",
      " [7 8]]\n",
      "3\n"
     ]
    }
   ],
   "source": [
    "b = a[0:2, 2:4]\n",
    "print (b)\n",
    "print (b[0, 0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " #### 7. 把第5题中数组a的最后两行所有元素放到 c中，（提示： a[1:2, :]）(1)输出 c ; (2) 输出 c 中第一行的最后一个元素（提示，使用 -1                 表示最后一个元素）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 5  6  7  8]\n",
      " [ 9 10 11 12]]\n",
      "8\n"
     ]
    }
   ],
   "source": [
    "c = a[1:3, :]\n",
    "print (c)\n",
    "print (c[0, -1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 8.建立数组a,初始化a为[[1, 2], [3, 4], [5, 6]]，输出 （0,0）（1,1）（2,0）这三个元素（提示： 使用 print(a[[0, 1, 2], [0, 1, 0]]) ）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 4 5]\n"
     ]
    }
   ],
   "source": [
    "a = np.array([[1, 2], [3, 4], [5, 6]])\n",
    "print (a[[0, 1, 2], [0, 1, 0]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 9.建立矩阵a ,初始化为[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]，输出(0,0),(1,2),(2,0),(3,1) (提示使用 b = np.array([0, 2, 0, 1])                     print(a[np.arange(4), b]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 1  6  7 11]\n"
     ]
    }
   ],
   "source": [
    "a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])\n",
    "b = np.array([0, 2, 0, 1])\n",
    "print (a[np.arange(4), b])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 10.对9 中输出的那四个元素，每个都加上10，然后重新输出矩阵a.(提示： a[np.arange(4), b] += 10 ）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[11  2  3]\n",
      " [ 4  5 16]\n",
      " [17  8  9]\n",
      " [10 21 12]]\n"
     ]
    }
   ],
   "source": [
    "a[np.arange(4), b] += 10\n",
    "print (a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### array 的数学运算"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 11.  执行 x = np.array([1, 2])，然后输出 x 的数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "int32\n"
     ]
    }
   ],
   "source": [
    "x = np.array([1, 2])\n",
    "print (x.dtype)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 12.执行 x = np.array([1.0, 2.0]) ，然后输出 x 的数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "float64\n"
     ]
    }
   ],
   "source": [
    "x = np.array([1.0, 2.0])\n",
    "print (x.dtype)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 13.执行 x = np.array([[1, 2], [3, 4]], dtype=np.float64) ，y = np.array([[5, 6], [7, 8]], dtype=np.float64)，然后输出 x+y ,和 np.add(x,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 6.  8.]\n",
      " [10. 12.]] [[ 6.  8.]\n",
      " [10. 12.]]\n"
     ]
    }
   ],
   "source": [
    "x = np.array([[1, 2], [3, 4]], dtype = np.float64)\n",
    "y = np.array([[5, 6], [7, 8]], dtype = np.float64)\n",
    "print (x + y, np.add(x, y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 14. 利用 13题目中的x,y 输出 x-y 和 np.subtract(x,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-4. -4.]\n",
      " [-4. -4.]] [[-4. -4.]\n",
      " [-4. -4.]]\n"
     ]
    }
   ],
   "source": [
    "print (x - y, np.subtract(x, y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 15. 利用13题目中的x，y 输出 x*y ,和 np.multiply(x, y) 还有  np.dot(x,y),比较差异。然后自己换一个不是方阵的试试。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 5. 12.]\n",
      " [21. 32.]] [[ 5. 12.]\n",
      " [21. 32.]] [[19. 22.]\n",
      " [43. 50.]]\n"
     ]
    },
    {
     "ename": "ValueError",
     "evalue": "shapes (3,2) and (3,2) not aligned: 2 (dim 1) != 3 (dim 0)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-9-06ba248087c4>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mx1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m6\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloat64\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[0my1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m6\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m7\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m8\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m9\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloat64\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mprint\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mx1\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0my1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmultiply\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m: shapes (3,2) and (3,2) not aligned: 2 (dim 1) != 3 (dim 0)"
     ]
    }
   ],
   "source": [
    "print (x * y, np.multiply(x, y), np.dot(x, y))\n",
    "#numpy dot：[[1*5+2*7, 1*6+2*8],[3*5+4*7, 3*6+4*8]]\n",
    "x1 = np.array([[1, 2], [3, 4], [5, 6]], dtype = np.float64)\n",
    "y1 = np.array([[5, 6], [7, 8], [9, 0]], dtype = np.float64)\n",
    "print (x1 * y1, np.multiply(x1, y1), np.dot(x1, y1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 16. 利用13题目中的x,y,输出 x / y .(提示 ： 使用函数 np.divide())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.2        0.33333333]\n",
      " [0.42857143 0.5       ]]\n"
     ]
    }
   ],
   "source": [
    "print (np.divide(x, y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 17. 利用13题目中的x,输出 x的 开方。(提示： 使用函数 np.sqrt() )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1.         1.41421356]\n",
      " [1.73205081 2.        ]]\n"
     ]
    }
   ],
   "source": [
    "print (np.sqrt(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 18.利用13题目中的x,y ,执行 print(x.dot(y)) 和 print(np.dot(x,y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[19. 22.]\n",
      " [43. 50.]]\n",
      "[[19. 22.]\n",
      " [43. 50.]]\n"
     ]
    }
   ],
   "source": [
    "print (x.dot(y))\n",
    "print (np.dot(x, y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 19.利用13题目中的 x,进行求和。提示：输出三种求和 (1)print(np.sum(x)):   (2)print(np.sum(x，axis =0 ));   (3)print(np.sum(x,axis = 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10.0\n",
      "[4. 6.]\n",
      "[3. 7.]\n"
     ]
    }
   ],
   "source": [
    "print (np.sum(x))\n",
    "print (np.sum(x, axis = 0 ))\n",
    "print (np.sum(x, axis = 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 20.利用13题目中的 x,进行求平均数（提示：输出三种平均数(1)print(np.mean(x)) (2)print(np.mean(x,axis = 0))(3) print(np.mean(x,axis =1))）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.5\n",
      "[2. 3.]\n",
      "[1.5 3.5]\n"
     ]
    }
   ],
   "source": [
    "print (np.mean(x))\n",
    "print (np.mean(x, axis = 0))\n",
    "print (np.mean(x, axis = 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 21.利用13题目中的x，对x 进行矩阵转置，然后输出转置后的结果，（提示： x.T 表示对 x 的转置）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1. 3.]\n",
      " [2. 4.]]\n"
     ]
    }
   ],
   "source": [
    "print (x.T)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "#### 22.利用13题目中的x,求e的指数（提示： 函数 np.exp()）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 2.71828183  7.3890561 ]\n",
      " [20.08553692 54.59815003]]\n"
     ]
    }
   ],
   "source": [
    "print (np.exp(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 23.利用13题目中的 x,求值最大的下标（提示(1)print(np.argmax(x)) ,(2) print(np.argmax(x, axis =0))(3)print(np.argmax(x),axis =1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n",
      "[1 1]\n",
      "[1 1]\n"
     ]
    }
   ],
   "source": [
    "print (np.argmax(x))\n",
    "print (np.argmax(x, axis = 0))\n",
    "print (np.argmax(x, axis = 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 24,画图，y=x*x 其中 x = np.arange(0, 100, 0.1) （提示这里用到  matplotlib.pyplot 库）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(0, 100, 0.1)\n",
    "y = x * x\n",
    "plt.plot(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 25.画图。画正弦函数和余弦函数， x = np.arange(0, 3 * np.pi, 0.1)(提示：这里用到 np.sin() np.cos() 函数和 matplotlib.pyplot 库)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(0, 3 * np.pi, 0.1)\n",
    "plt.plot(x, np.sin(x))\n",
    "plt.plot(x, np.cos(x))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
